<?php

/**
 * 在线字典模型
 */
class Dict_model extends CI_Model {

	private $appkey = '7a85e0297c4e389c';
	private $seckey = '8RWfd0FAn8VErH1w7FE5dVFE6kdcp26V';
	private $url    = 'http://openapi.youdao.com/api';

	public function translate($query, $from = "EN", $to = 'zh-CHS') {
		$args = array(
			'q'      => $query,
			'appKey' => $this->appkey,
			'salt'   => rand(10000, 99999),
			'from'   => $from,
			'to'     => $to,

		);
		$args['sign'] = $this->buildSign($this->appkey, $query, $args['salt'], $this->seckey);
		$ret          = $this->call($this->url, $args);
		// echo $ret;
		$ret = json_decode($ret, true);
		return $ret;
	}

	public function buildSign($appKey, $query, $salt, $secKey) {
		$str = $appKey . $query . $salt . $secKey;
		$ret = md5($str);
		return $ret;
	}

//发起网络请求
	public function call($url, $args = null, $method = "post", $testflag = 0, $timeout = 20, $headers = array()) {

		$ret = false;
		$i   = 0;
		while ($ret === false) {
			if ($i > 1) {
				break;
			}

			if ($i > 0) {
				sleep(1);
			}
			$ret = $this->callOnce($url, $args, $method, false, $timeout, $headers);
			$i++;
		}
		return $ret;
	}

	public function callOnce($url, $args = null, $method = "post", $withCookie = false, $timeout = 20, $headers = array()) {

		$ch = curl_init();
		if ($method == "post") {
			$data = $this->convert($args);
			curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
			curl_setopt($ch, CURLOPT_POST, 1);
		} else {
			$data = $this->convert($args);
			if ($data) {
				if (stripos($url, "?") > 0) {
					$url .= "&$data";
				} else {
					$url .= "?$data";
				}
			}
		}
		curl_setopt($ch, CURLOPT_URL, $url);
		curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		if (!empty($headers)) {
			curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
		}
		if ($withCookie) {
			curl_setopt($ch, CURLOPT_COOKIEJAR, $_COOKIE);
		}
		$r = curl_exec($ch);
		curl_close($ch);
		return $r;
	}

	public function convert(&$args) {

		$data = '';
		if (is_array($args)) {
			foreach ($args as $key => $val) {
				if (is_array($val)) {
					foreach ($val as $k => $v) {
						$data .= $key . '[' . $k . ']=' . rawurlencode($v) . '&';
					}
				} else {
					$data .= "$key=" . rawurlencode($val) . "&";
				}
			}
			return trim($data, "&");
		}
		return $args;
	}

//调用翻译

}
